/**
 * File: CurtainConfig.java
 * Created by: mhaimel
 * Created on: 6 Jul 2009
 * CVS:  $Id: CurtainConfig.java,v 1.1 2009/08/05 15:16:12 mhaimel Exp $
 */
package uk.ac.ebi.curtain.configuration;

import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference;

import com.google.inject.Singleton;


/**
 * @author mhaimel
 *
 */
@Singleton
public class CurtainConfig {
	private final AtomicLong maqMaxFastqFile = new AtomicLong(1073741824L);
	
//	private final AtomicInteger maqParallel = new AtomicInteger(1);
//	private final AtomicInteger velvetParallel = new AtomicInteger(1);
//	private final AtomicInteger curtainParallelWriter = new AtomicInteger(1);
	private final AtomicInteger uniqueMinContigLength = new AtomicInteger(200);
	private final AtomicLong maxBucketSequenceLength = new AtomicLong(4000000); // 4MB
	
	private final AtomicReference<String> maqExec = new AtomicReference<String>();
	private final AtomicReference<String> velvetgExec = new AtomicReference<String>();
	private final AtomicReference<String> velvethExec = new AtomicReference<String>();
	
	public CurtainConfig() {
		// do nothing
	}

//	public Integer getMaqParallel() {
//		return maqParallel.get();
//	}
//
//	public void setMaqParallel(Integer maqParallel) {
//		this.maqParallel.set(maqParallel);
//	}

	public Long getMaqMaxFastqFile() {
		return maqMaxFastqFile.get();
	}

	public void setMaqMaxFastqFile(Long maqMaxFastqFile) {
		this.maqMaxFastqFile.set(maqMaxFastqFile);
	}

	public String getVelvetgExec() {
		return velvetgExec.get();
	}

	public void setVelvetgExec(String velvetgExec) {
		this.velvetgExec.set(velvetgExec);
	}

	public String getVelvethExec() {
		return velvethExec.get();
	}

	public void setVelvethExec(String velvethExec) {
		this.velvethExec.set(velvethExec);
	}

//	public Integer getVelvetParallel() {
//		return velvetParallel.get();
//	}
//
//	public void setVelvetParallel(Integer velvetParallel) {
//		this.velvetParallel.set(velvetParallel);
//	}
//
//	public Integer getCurtainParallelWriter() {
//		return curtainParallelWriter.get();
//	}
//
//	public void setCurtainParallelWriter(Integer curtainParallelWriter) {
//		this.curtainParallelWriter.set(curtainParallelWriter);
//	}
	
	

	public String getMaqExec() {
		return maqExec.get();
	}

	public void setMaqExec(String maqExec) {
		this.maqExec.set(maqExec);
	}

	public Integer getUniqueMinContigLength() {
		return uniqueMinContigLength.get();
	}

	public void setUniqueMinContigLength(Integer uniqueMinContigLength) {
		this.uniqueMinContigLength.set(uniqueMinContigLength);
	}

	/**
	 * @return the maxBucketSequenceLength
	 */
	public Long getMaxBucketSequenceLength() {
		return maxBucketSequenceLength.get();
	}
	
	/**
	 * @return the maxBucketSequenceLength
	 */
	public void setMaxBucketSequenceLength(Long maxBucketSequenceLength) {
		this.maxBucketSequenceLength.set(maxBucketSequenceLength);
	}
	
}
